package org.dxy.infrastructure.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;

import java.time.LocalDateTime;

/**
 * @description: 工序参数配置实体类（工序专属参数配置）
 * @author: dxy
 * @createTime: 2025/1/21
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("process_param_requirement")
@EqualsAndHashCode(callSuper = true)
public class ProcessParamRequirementEntity extends Model<ProcessParamRequirementEntity> {

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 工序ID */
    private Long processId;

    /** 参数定义ID（引用全局参数） */
    private Long paramDefinitionId;

    /** 校验类型（RANGE / EXACT / ENUM） */
    private String validateType;

    /** 范围下限 */
    private BigDecimal minValue;

    /** 范围上限 */
    private BigDecimal maxValue;

    /** 精确值 */
    private String exactValue;

    /** 枚举集合（JSON 或逗号分隔） */
    private String enumValues;

    /** 是否必填 */
    private Boolean required;

    /** 公差（±0.1） */
    private BigDecimal tolerance;

    /** 备注 */
    private String remark;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /** 创建人 */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 更新人 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /** 是否删除 */
    @TableLogic
    private Boolean deleted;

}